#ifndef __EVENTKEYBOARD_HPP__
#define	__EVENTKEYBOARD_HPP__

#include <IEventReceiver.h>

#include "../EventBase.hpp"

namespace Event
{
    class EventKeyboard :
    public EventBase
    {
    protected:
        /**
         * @fn       EventKeyboard(const irr::SEvent::SKeyInput& _keyEvent, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _keyCode        keycode of the keyboard
         * @param    _char           char of the keyboard
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventKeyboard(const irr::SEvent::SKeyInput& _keyEvent, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(EVENT_KEYBOARD, _timeToWait, _nbFires),
        m_keyEvent(_keyEvent)
        {
        }
    public:
        /**
         * @fn       EventKeyboard(void* _sender, const irr::SEvent::SKeyInput& _keyEvent, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _keyCode        keycode of the keyboard
         * @param    _char           char of the keyboard
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventKeyboard(void* _sender, const irr::SEvent::SKeyInput& _keyEvent, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(_sender, EVENT_KEYBOARD, _timeToWait, _nbFires),
        m_keyEvent(_keyEvent)
        {
        }

        /**
         * @fn       EventKeyboard(const EventKeyboard& orig)
         * @brief    Copy Contructor
         * @param    orig       Copy of the event we have to do
         */
        EventKeyboard(const EventKeyboard& orig) :
        EventBase(orig),
		m_keyEvent(orig.m_keyEvent)
        {
        }

        /**
         * @fn       getKeyEvent()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		irr::SEvent::SKeyInput getKeyEvent()
        {
            return m_keyEvent;
        }

        /**
         * @fn       ~EventKeyboard()
         * @brief    Virtual Destructor
         */
        virtual ~EventKeyboard()
        {
        }
    private:
        irr::SEvent::SKeyInput  m_keyEvent;

    };

} //  namespace Event


#endif	/* __EVENTKEYBOARD_HPP__ */

